const express = require('express');
const router = express.Router();
const logController = require('../../controllers/logController');
const { validateRequest } = require('../../middleware/validationMiddleware');
const { body, param, query } = require('express-validator');

// 创建系统日志
router.post('/log',
    [
        body('module').notEmpty().withMessage('日志模块不能为空'),
        body('request_method').notEmpty().withMessage('请求方式不能为空'),
        body('content').notEmpty().withMessage('日志内容不能为空')
    ],
    validateRequest,
    logController.createLog
);

// 获取系统日志列表
router.get('/log/page',
    [
        query('pageNum').exists().withMessage('pageNum参数缺失')
            .isInt({ min: 1 }).withMessage('pageNum必须为大于0的整数'),
            query('pageSize').exists().withMessage('pageSize参数缺失')
            .isInt({ min: 1, max: 100 }).withMessage('pageSize必须为1-100之间的整数'),
            query('module').optional().isString(),
            query('requestMethod').optional().isString(),
            query('keywords').optional().isString(),
            query('ip').optional().isString(),
            query('createTime').optional().isArray().withMessage('创建时间必须为数组'),
    ],
    validateRequest,
    logController.getLogList
);

// 获取访问趋势统计
router.get('/log/visit-trend',
    [
        query('startDate').exists().withMessage('开始日期不能为空')
            .isISO8601().withMessage('开始日期格式不正确'),
        query('endDate').exists().withMessage('结束日期不能为空')
            .isISO8601().withMessage('结束日期格式不正确')
    ],
    validateRequest,
    logController.getVisitTrend
);

// 获取系统日志详情
router.get('/log/:id',
    [
        param('id').isInt().withMessage('无效的日志ID')
    ],
    validateRequest,
    logController.getLogById
);

// 清空系统日志
router.delete('/log/clear',
    logController.clearLog
);

// 删除系统日志
router.delete('/log/:id',
    [
        param('id').isInt().withMessage('无效的日志ID')
    ],
    validateRequest,
    logController.deleteLog
);

// 批量删除系统日志
router.post('/log/batch/delete',
    [
        body('ids').isArray().withMessage('日志ID列表必须为数组'),
        body('ids.*').isInt().withMessage('无效的日志ID')
    ],
    validateRequest,
    logController.batchDeleteLog
);

module.exports = router;